最近在公司负责了一个类似 element-ui 的 vue ui 库的开发,然后在如何合理分发的问题上遇到了麻烦。
因为想要用起来更加方便,那么如何简单的安装使用起来显然也是需要考虑的问题。
最终我们决定通过 npm 包管理的方式来分发使用我们的内部 ui 库。
毕竟 npm install package 几乎是现实的标准了,也是前端最为熟悉的方式了,不过这也引发了额外一个问题。
我们的内部 ui 库是放在公司内部的私有 gitlab 仓库当中,也并没有发包到 npm 上,自然还是需要格外做一些工作。
npm 常见安装包的方式
先让我们回顾一下 npm 的安装方式。
根据官网,撇开额外的 common options, npm install 可以处理的方式有如下 10 种,让我们来复习一下
|
|
通过 url 的方式安装
那么既然我那个ui库放在在了 gitlab 中,当然是通过 npm install <git-host>:<git-user>/<repo-name>
或者 npm install <git repo url>
不过npm install <git repo url>
很快就被否决了
问题在于权限
是的,因为这是我司的私有 gitlab 仓库,虽然可以通过公网访问的到,但是必须经过登陆验证,才能得到最基础的访问权限,当然,这是为了保障安全所必需的。
因此 npm install <git repo url>
会通过 http/https 的方式去访问 git 仓库,无法通过登陆获得有效的权限。
虽然好像是可以通过命令行跳转访问登陆作为解决方案,就像使用 git 的时候直接通过命令行登陆那样。
但仔细想想就知道其实是不行的,因为这只适用于与单次安装访问。
如果git repo url
是写在 package.json 当中的话,你总不能在每次 npm install 安装的时候都要求用户登录,
除非你觉得把登陆账号密码保存到什么脚本上来自动登陆是个绝佳的方法。
通过 ssh 访问
嘛,所以最终就剩下 npm install <git-host>:<git-user>/<repo-name>
的方式,
而这个与 npm install <git repo url>
的区别就是可以通过 ssh 对 git 仓库进行访问,这就避免了登陆的问题了。
具体的配置方式是
其中 protocol 使用 git+ssh, 由于已经用了 ssh 所以 user/password 就不需要了,除此之外://后的一长串的东西其实也不需要记,直接从对应的 git 仓库的分支上把链接复制下来就好了。
当然对应不同的平台多多少少有些不同,如果要更详细的说明的话k看npm官方的文档吧